A virtualized cloud-computing environment may host many thousands of virtual components, such as virtual desktop computers, servers, peripherals, network buses, and other infrastructure components. These components, and software applications that run on them, may consume different amounts of network resources, and these amounts may change rapidly over time.
It is thus possible that one subset of virtual components and applications may consume far more bandwidth and other resources than does another subset, even if the two subsets contain similar numbers of components. Furthermore, such imbalances may be transient, existing only so long as a particular combination of users, applications, or other dynamic requirements exist in a particular configuration.
Such virtualized computing environments could thus be optimized by a mechanism that identifies such imbalances and automatically reconfigures components so as to more evenly distribute workloads.
Many network-optimization tools exist, but none actively monitor utilization of cloud resources and dynamically reconfigure that cloud's topology as a function of the monitored usage characteristics.
Similar constraints prevent system administrators from dynamically optimizing other types of virtualized computing environments.